/*
 * @Author: actor
 * @Date: 2023-11-13 15:44:14
 * @email: 395593455@qq.com
 * @LastEditors: actor
 * @LastEditTime: 2023-12-06 18:15:37
 * @FilePath: \i-hos-app\project\i-his\src\interface\emr\page.ts
 * @Description:
 */
// 特殊符号
export interface ISymbol {
  name: string // 选择符号的tabs
  list: string[] // 符号数组
}
// 恒牙牙位
export interface IToothSeat {
  leftTop: string[] // 左上
  rightTop: string[] // 右上
  leftBottom: string[] // 左下
  rightBottom: string[] // 右下
}
// 月经史
export interface IMenseNum {
  day: number // 月经持续天数
  mCycle: number //  初潮周期
  age: number // 绝经年龄
  pCycle: number //  生理周期
}
//  菜单栏
export interface IContextMenu {
  text: string // 文本
  edit: string // 编辑类型和图标操作的类型
  type?: string // 类型
  hint?: string // 快捷键
}

// 表格行列
export interface IRowCell {
  row: number // 行数
  cell: number // 列数
}

// 电子病历侧栏相关属性配置
export interface IConfig {
  // --基础的配置
  type?: string // 文档类型和对应操作的组件名称
  name?: string // 标识(存储数据库的字段)
  des?: string // 描述
  textVal?: string // 文本或者选中值
  code?: string | number // 编码
  // 特殊组件的值配置
  menses?: IMenseNum // 月经史
  toothSeat?: IToothSeat // 牙位图
  // 多选项
  option?: Array<string> | string // 选择项

  // ---设置的配置
  multi?: boolean // 选择项是否多选
  validate?: boolean // 是否必填
  edit?: boolean // 是否可编辑

  // ---样式的配置
  array?: string // 排列方向(默认横向， 1为默认横向， 2为纵向) 一般type为checkbox或则radio；
  alignment?: string // 对齐方式(left, center, right)
  minWidth?: number // 最小宽度
  bgColor?: string // 背景色
}
export interface IJson {
  HEADER?: any
  BODY?: any
  FOOTER?: any
}
// 操作元素相关的所有配置
export interface IPageConfigStore {
  targetEl?: any // 当前target元素
  activeEl?: any // 当前操作所指定查找到的元素
  commonComponentActive?: string // 需要加载渲染的公共组件
  lastAangeAt?: any // 电子病历页面光标的位置
  el: string // 电子病历页面操作的节点
  val: IConfig // 配置对应的值
  asideTabsActive?: string // 侧栏tabs选中的状态
  json?: IJson // 数据配置
  $patch?: Function // 修改store的方法
}

// dom元素的数据
export interface IDomRect extends DOMRect {
  t: number
  l: number
  h: number
  w: number
}
export interface IRowCol {
  startRowIndex: number // 开始行
  startCellIndex: number // 开始列
  endRowIndex: number // 结束行
  endCellIndex: number // 结束列
}
export interface ITableLog {
  startTD?: HTMLTableRowElement | null // 开始触发的td
  endTD?: HTMLTableRowElement | null // 结束触发的td
  totalCell?: number // 总列数
  tdRc?: IRowCol | null // 每一个td的行列位置信息
  curDom?: HTMLTableElement | null // 当前需要设置列宽度的元素
  curResizeTD?: IDomRect | any // 当前td的位置数据
  curResizeTdNextSibling?: IDomRect | any // 当前td下一个td位置的数据
  resizeTd?: boolean // 否在重置列宽
  resizeTr?: boolean // 是否在重置列高
  resizeSelected?: boolean // 是否在移动设置表格选择状态
  resizeMerge?: boolean // 是否在合并取消单元格
}
